package ControleAcademico.View;

import java.util.ArrayList;
import java.util.Scanner;

import ControleAcademico.Model.Dao.AlunoImpl;
import ControleAcademico.Model.Dao.DisciplinaImpl;
import ControleAcademico.Model.Dao.HistoricoAtividadeImpl;
import ControleAcademico.Model.Pojo.Aluno;
import ControleAcademico.Model.Pojo.Disciplina;
import ControleAcademico.Model.Pojo.HistoricoDisciplina;

public class MenuAluno {

	private AlunoImpl alunoImpl; 
	private HistoricoAtividadeImpl historicoAtividadeImpl;
	private DisciplinaImpl disciplinaImpl;
	public MenuAluno(AlunoImpl alunoImpl,HistoricoAtividadeImpl historicoAtividadeImpl, DisciplinaImpl disciplinaImpl) {
		this.alunoImpl = alunoImpl;
		this.historicoAtividadeImpl = historicoAtividadeImpl;
		this.disciplinaImpl = disciplinaImpl;
	}
	
	public void cadastrar(){
		
		int flag = 0;
		Scanner entrada = new Scanner(System.in);
		
		while (flag != -1) {
			
			for(int i=0;i<50;i++){
				System.out.println("");
			}
			
			System.out.println("\n:: Cadastro do Aluno ::\n");
			System.out.println("\nInforme o nome do aluno: ");
			String nome = entrada.nextLine();

			System.out.println("\nInforme o CPF: ");
			String cpf = entrada.nextLine();
			
			
			boolean verifica = true;
			for(Aluno n : alunoImpl.getListaDeAlunos()){
				if(n.getCpf().equals(cpf)){
					verifica = false;
					System.out.println("Já existe Aluno com CPF informado!\n");
					break;
				}
			}
			
			boolean conti = true;

			while(conti){
				System.out.println("\n\nAluno cadastrado com sucesso!\n\n\n\n");
				System.out.println("\n\nAperte qualquer tecla para continuar ...\n");
				String leitura = entrada.nextLine();
				conti = false;
			}
			
			for(int l = 0; l<50;l++){
				System.out.println();
			}
			
			System.out.println("\nDeseja adicionar mais alunos? S/N: ");
			String leitura = entrada.nextLine();
			
			if(leitura.equals("N") || leitura.equals("n")){
				flag = -1;
			}
			
			if(verifica){
				
				
				Aluno alunoNovo = new Aluno (nome, cpf);
				
				alunoImpl.salvar(alunoNovo,historicoAtividadeImpl,0);
				
			}
			
		}
			
	}

	public void consultarSituacaoAluno(){
		ArrayList<HistoricoDisciplina> listaDeHistoricos = new ArrayList<HistoricoDisciplina>();
		ArrayList<Disciplina> auxiliarDisciplina;
		Disciplina disciplinaEscolhida = null;
		HistoricoDisciplina historicoEscolhido = null;
		
		int options = 0;
		int j = 1;
		int i = 1;
		
		Scanner lerDados = new Scanner(System.in); 
		auxiliarDisciplina = disciplinaImpl.getListaDeDisciplinas();
						
/*----------------------------------------------------------------------------------------*/
// Listando as disciplinas			
/*----------------------------------------------------------------------------------------*/

		for(int a=0;a<50;a++){
			System.out.println("");
		}
						
									
		System.out.println("Lista de disciplinas\n");
						
		for (Disciplina disciplinas : auxiliarDisciplina) {
			System.out.println(i + " - " + disciplinas.getNome() + "\n" );
			i++;
		}
						
					
		System.out.print("Por favor, informe a opção desejada:");
		String leitura = lerDados.nextLine();
		options = Integer.parseInt(leitura);
									
		if (options > 0 && options < i){
							
			for (Disciplina disciplinas : auxiliarDisciplina){
									
				if (j == options){
					disciplinaEscolhida = disciplinas;
					break;
				}else{
					j++;
				}	
			}
		}
		
		listaDeHistoricos = disciplinaEscolhida.getHistoricosDisciplina();

/*----------------------------------------------------------------------------------------*/
// Listando as disciplinas			
/*----------------------------------------------------------------------------------------*/
		for(int a=0;a<50;a++){
			System.out.println("");
		}
						
									
		System.out.println("Lista de Alunos\n");
		i = 1;				
		for (HistoricoDisciplina historicosDisciplina : listaDeHistoricos) {
			System.out.println(i + " - " + historicosDisciplina.getAluno().getNome() + "\n" );
			i++;
		}
		
		j = 1;			
		System.out.print("Por favor, informe o aluno para consultar:");
		leitura = lerDados.nextLine();
		options = Integer.parseInt(leitura);
										
		if (options > 0 && options < i){
								
			for (HistoricoDisciplina historicosDisciplina : listaDeHistoricos) {
									
				if (j == options){
					historicoEscolhido = historicosDisciplina;
					break;
				}else{
					j++;
				}	
			}
		}
					
		System.out.println("\nAluno: "+ historicoEscolhido.getAluno().getNome()+ "\nNota: "+historicoEscolhido.getNota() +"\nFaltas: "+ "?" + "\nSituação: "+ historicoEscolhido.getAprovacao());
		boolean cont = true;
		
		while(cont){
			System.out.println("\n\nTecle 1 para sair ...\n");
			leitura = lerDados.nextLine();
			int opt = Integer.parseInt(leitura);
			if (opt==1){
				cont = false;
			}
		}
	}	
	
}
